#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <cstdio>
#include <cstdlib>


int cnt = 1;

void handler(int sig)
{
    std::cout << "get sig: " << sig << std::endl;
    std::cout << "cnt: " << cnt << std::endl;
    exit(1);
}

int main()
{
    signal(14, handler);
    alarm(1);
    while (true)
    {
        cnt++;
    }

    return 0;
}

// void handler(int sig)
// {
//     alarm(1);
//     std::cout << "get sig: " << sig << std::endl;
// }

// int main()
// {
//     signal(14, handler);
//     alarm(1);
//     while (true)
//     {
//         std::cout << "hello world" << std::endl;
//         sleep(1);
//     }
//     return 0;
// }

// int main()
// {
//     alarm(5);
//     sleep(1);
//     int n = alarm(0);// alarm(0) 提前取消闹钟，返回值是上一次闹钟的剩余时间
//     std::cout << "n = " << n << std::endl;
//     return 0;
// }

// int main()
// {
//     alarm(5);
//     int cnt = 1;
//     while(true)
//     {
//         std::cout << "second = " << cnt << std::endl;
//         cnt++;
//         sleep(1);
//     }

//     return 0;
// }

// void handler(int sig)
// {
//     std::cout << "get sig: " << sig << std::endl;
//     exit(1);
// }

// int main()
// {
//     signal(SIGKILL, handler);
//     int cnt = 5;
//     while (cnt--)
//     {
//         std::cout << "hello world -> "  << cnt << std::endl;
//         sleep(1);
//     }

//     abort();
//     return 0;
// }

// int main()
// {
//     signal(SIGKILL, handler);
//     int cnt = 5;
//     while (cnt--)
//     {
//         std::cout << "hello world -> "  << cnt << std::endl;
//         sleep(1);
//     }

//     raise(9);
//     return 0;
// }

// int main()
// {
//     pid_t id = fork();

//     if(id == 0)
//     {
//         //child
//         signal(3, handler);
//         while (true)
//         {
//             std::cout << "i am process" <<std::endl;
//             sleep(1);
//         }
//     }

//     //father
//     sleep(3);
//     kill(id, 3);

//     return 0;
// }
